package cn.stylefeng.guns.modular.wms.service;

import cn.stylefeng.guns.modular.order.domain.dto.OrderDTO;
import cn.stylefeng.guns.modular.wms.domain.dto.PurchaseInputOrderDTO;
import cn.stylefeng.guns.modular.wms.domain.dto.ReturnGoodsInputOrderDTO;
import cn.stylefeng.guns.modular.wms.domain.dto.SaleDeliveryOrderDTO;

/**
 * 仓储系统对外提供的接口
 * @author allen
 * @version 1.0
 * @date 2021/4/11 18:24
 */
public interface WmsFacadeService {


    /**
     * 通知wms，创建采购入库单事件
     * @param purchaseInputOrderDTO 采购入库单的DTO对象
     * @return 处理结果
     */
    Boolean createPurchaseInputOrder(PurchaseInputOrderDTO purchaseInputOrderDTO);

    /**
     * 通知wms，创建销售出库事件
     * @param saleDeliveryOrderDTO 销售出库单的DTO对象
     * @return 处理结果
     */
    Boolean createSaleDeliveryOrder(SaleDeliveryOrderDTO saleDeliveryOrderDTO);

    /**
     * 通知wms，创建商品入库单事件
     * @param returnGoodsInputOrder 退货入库单的DTO对象
     * @return 处理结果
     */
    Boolean createReturnGoodsInputOrder(ReturnGoodsInputOrderDTO returnGoodsInputOrder);


    /**
     * 通知wms，订单提交事件 发生了
     * @param orderDTO 订单的DTO对象
     * @return 处理结果
     */
    Boolean informSubmitOrderEvent(OrderDTO orderDTO);


    /**
     * 通知wms，订单支付事件 发生了
     * @param orderDTO 订单的DTO对象
     * @return 处理结果
     */
    Boolean informPayOrderEvent(OrderDTO orderDTO);


    /**
     * 通知wms，订单取消事件 发生了
     * @param orderDTO 订单的DTO对象
     * @return 处理结果
     */
    Boolean informCancelOrderEvent(OrderDTO orderDTO);
}
